import request from '../utils/request.js';

// 获取水果评价统计
// params:
// - fruitDetailId: 水果详情ID
export const getReviewStats = (fruitDetailId) => {
  return request.get(`/api/review/stats/${fruitDetailId}`);
};

// 获取水果评价列表
// params:
// - fruitDetailId: 水果详情ID
// - type: 评价类型（0-全部，1-最新，2-有图，3-优质）
export const getReviewList = (fruitDetailId, type) => {
  return request.get(`/api/review/list/${fruitDetailId}`, {
    type
  });
};

// 添加评价
// params:
// - reviewDTO: {
//   fruitDetailId: 水果详情ID,
//   content: 评价内容,
//   rating: 评分(1-5),
//   images: 图片URL列表
// }
export const addReview = (reviewDTO) => {
  return request.post('/api/review/add', reviewDTO);
};

// 获取评价回复列表
// params:
// - reviewId: 评价ID
// response: {
//   id: 回复ID,
//   reviewId: 评价ID,
//   userId: 用户ID,
//   nickname: 用户昵称,
//   avatarUrl: 用户头像,
//   phone: 用户手机号（脱敏）,
//   ipLocation: IP属地,
//   content: 回复内容,
//   likes: 点赞数,
//   hasLiked: 当前用户是否已点赞,
//   createTime: 创建时间
// }
export const getReplyList = (reviewId) => {
  return request.get(`/api/review/reply/list/${reviewId}`);
};

// 添加评价回复
// params:
// - replyDTO: {
//   reviewId: 评价ID,
//   content: 回复内容
// }
// response: 回复ID
export const addReply = (replyDTO) => {
  return request.post('/api/review/reply/add', replyDTO);
};

// 点赞评价
// params:
// - reviewId: 评价ID
// response: 是否成功
export const likeReview = (reviewId) => {
  return request.post(`/api/review/like/${reviewId}`);
};

// 取消点赞评价
// params:
// - reviewId: 评价ID
// response: 是否成功
export const unlikeReview = (reviewId) => {
  return request.post(`/api/review/unlike/${reviewId}`);
};

// 点赞回复
// params:
// - replyId: 回复ID
// - reviewId: 评价ID
// response: 是否成功
export const likeReply = (replyId, reviewId) => {
  return request.post(`/api/review/reply/like/${replyId}`, null, {
    params: { reviewId }
  });
};

// 取消点赞回复
// params:
// - replyId: 回复ID
// response: 是否成功
export const unlikeReply = (replyId) => {
  return request.post(`/api/review/reply/unlike/${replyId}`);
};

// 删除评价
// params:
// - reviewId: 评价ID
// response: 是否成功
export const deleteReview = (reviewId) => {
  return request.delete(`/api/review/${reviewId}`);
};
